package com.zmn.plat.dubbo.interfaces.orderconfig.cancel;

import java.util.List;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;

import com.zmn.common.dto.VtDTO;
import com.zmn.common.dto2.ResponseDTO;
import com.zmn.plat.common.dto.orderconfig.cancel.category.OrderCancelCategoryDIO;
import com.zmn.plat.common.dto.orderconfig.cancel.category.OrderCancelCategoryDRO;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**
 * @author tanbiao
 * @description
 * @since 2019/10/21 18:17
 * @modifier
 **/
@Api(value = "取消分类服务", tags = {"取消分类"})
public interface OrderCancelCategoryListRemoteService {
    /**
     * 描述: 根据主键查询取消分类
     *
     * @param categId
     * @return OrderCancelCategoryDRO
     * @auther: tanbiao
     * @since: 2019/10/23 11:11
     */
    @ApiOperation(value = "根据主键查询取消分类", response = ResponseDTO.class, notes = "取消分类", tags = {"取消分类"})
    ResponseDTO<OrderCancelCategoryDRO> getById(@NotNull(message = "主键id不能为空") @Positive(message = "主键id必须为大于0的正整数") @ApiParam(value = "主键id", required = true) Integer categId);

    /**
     * 描述: 查询所有取消分类
     *
     * @return OrderCancelCategoryDRO
     * @auther: tanbiao
     * @since: 2019/10/23 11:11
     * @see OrderCancelCategoryListRemoteService#listByQuery(com.zmn.plat.common.dto.orderconfig.cancel.category.OrderCancelCategoryDIO)
     */
    @Deprecated
    @ApiOperation(value = "查询所有取消分类", response = ResponseDTO.class, notes = "已过时", tags = {"取消分类"})
    ResponseDTO<List<OrderCancelCategoryDRO>> listAll();

    /**
     * 描述: 根据状态查询取消分类
     *
     * @param status
     *            1 禁用 2 启用
     * @return OrderCancelCategoryDRO
     * @auther: tanbiao
     * @since: 2019/10/23 11:11
     */
    @ApiOperation(value = "根据状态查询取消分类", response = ResponseDTO.class, notes = "状态查询取消分类", tags = {"状态", "取消分类"})
    ResponseDTO<List<OrderCancelCategoryDRO>> listByStatus(@NotNull(message = "状态不能为空") @Positive(message = "状态必须为大于0的正整数") @ApiParam(value = "状态", required = true) Integer status);

    /**
     * 描述: 根据条件查询取消分类
     *
     * @param orderCancelCategoryDIO
     * @return OrderCancelCategoryDRO
     * @auther: tanbiao
     * @since: 2019/10/23 11:11
     */
    @ApiOperation(value = "根据条件查询取消分类", response = ResponseDTO.class, notes = "", tags = {"取消分类"})
    ResponseDTO<List<OrderCancelCategoryDRO>> listByQuery(@NotNull(message = "入参不能为空") @Valid @ApiParam(value = "查询条件", required = true) OrderCancelCategoryDIO orderCancelCategoryDIO);

    /**
     * 描述：根据状态查询取消分类
     *
     * @param status
     *            状态
     * @return ResponseDTO<List>
     */
    @ApiOperation(value = "根据状态查询取消分类", response = ResponseDTO.class, notes = "状态查询取消分类", tags = {"状态", "取消分类"})
    ResponseDTO<List<VtDTO>> listVtByStatus(@NotNull(message = "状态不能为空") @Positive(message = "状态必须为大于0的正整数") @ApiParam(value = "状态", required = true) Integer status);
}
